package classe.grafica;

import classes.gerais.*;                                                        //Importação das classes gerais para ser utilizada aqui
import javax.swing.JOptionPane;

public class Cadastro extends javax.swing.JFrame {                              //Classe Cadastro - extende um JFrame
    
    private Usuario User;                                                       //User - Usuário que será cadastrado
    
    public Cadastro(Usuario UserR) {                                            //Montador que recebe a referência de um usuário para inicialização
        initComponents();                                                       //Inicia os componentes da JFrame
        User = UserR;                                                           //Referencia o usuário
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        TfCLogin = new javax.swing.JTextField();
        PfCSenha = new javax.swing.JPasswordField();
        PfCConfirmaSenha = new javax.swing.JPasswordField();
        TfCNome = new javax.swing.JTextField();
        TfCIdade = new javax.swing.JTextField();
        CCGenero = new javax.swing.JComboBox();
        LCLogin = new javax.swing.JLabel();
        LCSenha = new javax.swing.JLabel();
        LCConfirmarSenha = new javax.swing.JLabel();
        LCNome = new javax.swing.JLabel();
        LCIdade = new javax.swing.JLabel();
        LCGenero = new javax.swing.JLabel();
        LCCabeçalho = new javax.swing.JLabel();
        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("CER - Cadastro de Úsuario");

        CCGenero.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Masculino", "Feminino", "Outro" }));

        LCLogin.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        LCLogin.setText("Login:");

        LCSenha.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        LCSenha.setText("Senha:");

        LCConfirmarSenha.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        LCConfirmarSenha.setText("Confirmar senha:");

        LCNome.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        LCNome.setText("Nome:");

        LCIdade.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        LCIdade.setText("Idade:");

        LCGenero.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        LCGenero.setText("Gênero:");

        LCCabeçalho.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N
        LCCabeçalho.setText("CER - Comunicação");

        jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N
        jLabel1.setText("Cadastro de Usuário");

        jButton1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/classe/grafica/edit.png"))); // NOI18N
        jButton1.setText("Cadastrar");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(40, 40, 40)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(106, 106, 106)
                        .addComponent(LCCabeçalho)
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(LCLogin)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(TfCLogin, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                        .addComponent(LCSenha)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                        .addComponent(PfCSenha, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE))
                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                        .addComponent(LCConfirmarSenha)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(PfCConfirmaSenha, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 91, Short.MAX_VALUE)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(LCIdade)
                                    .addComponent(LCGenero)
                                    .addComponent(LCNome)))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(0, 0, Short.MAX_VALUE)
                                .addComponent(jLabel1)))
                        .addGap(43, 43, 43)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(TfCIdade, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(TfCNome, javax.swing.GroupLayout.PREFERRED_SIZE, 71, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(CCGenero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(35, 35, 35))))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(179, 179, 179))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(LCCabeçalho)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 31, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(TfCLogin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(TfCNome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(LCLogin)
                    .addComponent(LCNome))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(PfCSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(TfCIdade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(LCSenha)
                    .addComponent(LCIdade))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(PfCConfirmaSenha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(CCGenero, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(LCConfirmarSenha)
                    .addComponent(LCGenero))
                .addGap(29, 29, 29)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        int Permissao;                                                                      //Variável que indica como esta se comportando o cadastro e da a permissão de escrita no arquivo
        
        Permissao = 1;                                                                      //Inicializa a permissão no estado permitido
        if (TfCLogin.getText().trim().equals("")){                                          //Verifica se o campo do login esta em branco
            JOptionPane.showMessageDialog(null,"Preencha o campo usuário!!");               //Se estiver, mostra mensagem de necessidade de completamento
            Permissao = 0;                                                                  //Retira a permissão de escrita no arquivo de persistencia
        }
        if (PfCSenha.getText().trim().equals("")){                                          //Verifica se o campo do login esta em branco
            JOptionPane.showMessageDialog(null,"Preencha o campo senha!!");                 //Se estiver, mostra mensagem de necessidade de completamento
            Permissao = 0;                                                                  //Retira a permissão de escrita no arquivo de persistencia
        }
        if (PfCConfirmaSenha.getText().trim().equals("")) {                                     //Verifica se o campo da confirmação de senha esta em branco
            JOptionPane.showMessageDialog(null,"Preencha o campo de confirmação da senha!!");   //Se estiver, mostra mensagem de necessidade de completamento
            Permissao = 0;                                                                      //Retira a permissão de escrita no arquivo de persistencia
        }
        if (!PfCConfirmaSenha.getText().equals(PfCSenha.getText())) {                           //Verifica se o campo de confirmação de senha e o de senha estão iguais
            JOptionPane.showMessageDialog(null,"As senhas não conferem!!");                     //Se forem diferentes, mostra mensagemm ao usuário
            Permissao = 0;                                                                      //Retira a permissão de escrita no arquivo de persistencia
        } 
        if (TfCNome.getText().trim().equals("")){                                               //Verifica se o campo do nome esta em branco
            JOptionPane.showMessageDialog(null,"Preencha o campo de nome!!");                   //Se estiver, mostra mensagem de necessidade de completamento
            Permissao = 0;                                                                      //Retira a permissão de escrita no arquivo de persistencia
        }
        if (TfCIdade.getText().trim().equals("")){                                              //Verifica se o campo de idade esta em branco
            JOptionPane.showMessageDialog(null,"Preencha o campo de idade!!");                  //Se estiver, mostra mensagem de necessidade de completamento
            Permissao = 0;                                                                      //Retira a permissão de escrita no arquivo de persistencia
        }
        else {                                                                                      //Se não estiver em branco, verificar se é uma idade válida
            if ((Integer.parseInt(TfCIdade.getText()))<0){                                          //A idade não poderá ser menor que 0
                if ((Integer.parseInt(TfCIdade.getText())>9)) {                                     //A idade não poderá ser maior que 130 anos
                JOptionPane.showMessageDialog(null,"O campo de idade contém um número ilegal!!");   //Mostra mensagem de idade ilegal
                Permissao = 0;                                                      
                }
            }
        }
    
        
        if (Permissao == 1){                                                    //Se a permissão foi dada...
            User.InsereNDU(TfCLogin.getText());                                 //Seta o usuário
            User.InsereSenha(PfCSenha.getText());                               //Seta a senha
            User.InsereNome(TfCNome.getText());                                 //Seta o nome
            User.InsereIdade(Integer.parseInt(TfCIdade.getText()));             //Seta a idade
            User.InsereGenero((String) CCGenero.getSelectedItem());             //Seta o gênero
            User.PersisteUsuario();                                             //Salava o usuário
            this.setVisible(false);                                             //Tira a visibilidade do cadastro
            Principal TelaP = new Principal();                                  //Mostra tela principal
            TelaP.setLocationRelativeTo(null);                                  //Centra a tela principal
            TelaP.show();                                                       //Mostra a tela principal
        }
    }//GEN-LAST:event_jButton1ActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox CCGenero;
    private javax.swing.JLabel LCCabeçalho;
    private javax.swing.JLabel LCConfirmarSenha;
    private javax.swing.JLabel LCGenero;
    private javax.swing.JLabel LCIdade;
    private javax.swing.JLabel LCLogin;
    private javax.swing.JLabel LCNome;
    private javax.swing.JLabel LCSenha;
    private javax.swing.JPasswordField PfCConfirmaSenha;
    private javax.swing.JPasswordField PfCSenha;
    private javax.swing.JTextField TfCIdade;
    private javax.swing.JTextField TfCLogin;
    private javax.swing.JTextField TfCNome;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    // End of variables declaration//GEN-END:variables
}
